package com.odt.outdoor.utils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;

import com.odt.outdoor.framwork.Trace;


/**
 * Created by DELL on 2017/2/6.
 */

public class ToastUtils {
    private static Toast toast;
    private static View view;
    private static Context mContext;
    private ToastUtils() {
    }

    @SuppressLint("ShowToast")
    private static void getToast(Context context) {
        mContext = context;
        if (toast == null) {
            toast = new Toast(context);
        }
        if (view == null) {
            view = Toast.makeText(context, "", Toast.LENGTH_SHORT).getView();
        }
        toast.setView(view);
    }

    /**
     * 短吐司正常使用
     * @param context
     * @param msg
     */
    public static void showShortToast(Context context, CharSequence msg) {
        showToast(context.getApplicationContext(), msg, Toast.LENGTH_SHORT);
    }

    public static void showShortToast(Context context, int resId) {
        showToast(context.getApplicationContext(), resId, Toast.LENGTH_SHORT);
    }

    /**
     *  长吐司。。。正常使用
     * @param context
     * @param msg
     */
    public static void showLongToast(Context context, CharSequence msg) {
        showToast(context.getApplicationContext(), msg, Toast.LENGTH_LONG);
    }

    public static void showLongToast(Context context, int resId) {
        showToast(context.getApplicationContext(), resId, Toast.LENGTH_LONG);
    }

    private static void showToast(Context context, CharSequence msg,
                                  int duration) {
        try {
            getToast(context);
            toast.setText(msg);
            toast.setDuration(duration);
            toast.show();
        } catch (Exception e) {
            Trace.d(e.getMessage());
        }
    }

    private static void showToast(Context context, int resId, int duration) {
        try {
            if (resId == 0) {
                return;
            }
            getToast(context);
            toast.setText(resId);
            toast.setDuration(duration);
            toast.show();
        } catch (Exception e) {
            Trace.d(e.getMessage());
        }
    }

    /**
     * 吐司，位置中间，短吐司
     * @param context
     * @param msg
     */
    public static void showShortCenterToast(Context context, CharSequence msg) {
        showCenterToast(context.getApplicationContext(), msg, Toast.LENGTH_SHORT);
    }

    /**
     * 长吐司，位置中间....
     * @param context
     * @param msg
     */
    public static void showLongCenterToast(Context context, CharSequence msg) {
        showCenterToast(context.getApplicationContext(), msg, Toast.LENGTH_LONG);
    }


    private static void showCenterToast(Context context, CharSequence msg,
                                        int duration) {
        try {
            getToast(context);
            toast.setText(msg);
            toast.setDuration(duration);
            toast.setGravity(Gravity.CENTER,toast.getXOffset() / 2, toast.getYOffset() / 2);
            toast.show();
        } catch (Exception e) {
            Trace.d(e.getMessage());
        }
    }
}
